package subraSoft.fenix.gui.reparaciones;

import java.util.HashMap;
import java.util.Map;

import subraSoft.centaurus.gui.components.CenDateCellRenderer;
import subraSoft.centaurus.gui.option.amb.CenABM;
import subraSoft.centaurus.gui.option.amb.CenABMSaveOrUpdateDialog;
import subraSoft.centaurus.gui.option.amb.CenPaginableTableModel;
import subraSoft.centaurus.model.cobj.CenDefaultCObj;
import subraSoft.fenix.model.cliente.cobj.FenClienteCObj;
import subraSoft.fenix.model.cliente.service.FenClienteService;
import subraSoft.fenix.model.cliente.service.impl.FenClienteServiceImpl;
import subraSoft.fenix.model.reparacion.cobj.FenReparacionCObj;

@SuppressWarnings("serial")
public class FenABMReparaciones extends CenABM
{
	public FenABMReparaciones()
	{
		super("ABM Reparaciones");
	}
	
	@Override
	protected void setEditorAndRenderes() {
		table.getColumn("Fecha Creacion").setCellRenderer(new CenDateCellRenderer());
		table.getColumn("Fecha Finalizacion").setCellRenderer(new CenDateCellRenderer());
		table.getColumn("FechaEntrega").setCellRenderer(new CenDateCellRenderer());
	}

	@Override
	protected CenABMSaveOrUpdateDialog getSaveOrUpdateDialog(CenDefaultCObj rep) {
		return new FenReparacionesSaveOrUpdateDialog((FenReparacionCObj) rep);
	}

	@Override
	protected CenPaginableTableModel getModel() {
		return  new FenReparacionesPaginableTableModel(3);
	}

	@Override
	protected boolean isEditable() {
		return false;
	}
	
	@Override
	public String getReportFileName() {
		return "altaReparacion";
	}
	
	@Override
	public Map<String, Object> getReportParameters(CenDefaultCObj cobj) 
	{
		Map<String, Object> res = new HashMap<String, Object>();
		
		FenReparacionCObj rep = (FenReparacionCObj)cobj;
		
		FenClienteService cliServ = new FenClienteServiceImpl();
		FenClienteCObj cli = cliServ.getClienteById(rep.getIdCliente());
		
		res.put("id", rep.getId() );
		res.put("clienteNombre", cli.getNombre() );
		res.put("direccion", cli.getDireccion() );
		res.put("dni", cli.getDni() );
		res.put("cuit", cli.getCuit() );
		res.put("telefono", cli.getTelefono() );
		res.put("celular", cli.getCelular() );
		res.put("equipo", rep.getEquipo() );	
		res.put("serie", rep.getSerie() );
		res.put("marca", rep.getMarca() );
		res.put("accesorios", rep.getAccesorios() );
		res.put("pedido", rep.getPedido() );

		return res;
	}

	@SuppressWarnings("unchecked")
	@Override
	protected Class getTypePrimaryId() 
	{
		return Long.class;
	}
}
